﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TaxiCaosWeb.Models;
using System.ServiceModel;

namespace TaxiCaosWeb.Controllers
{
    public class SeguridadController : Controller
    {
        
        public ActionResult LoginModal()
        {
            return View();
        }

        public ActionResult Autenticar(Usuario usuario)
        {
            string mensaje = "";
            string tipoMensaje = "";
            try
            {
                SeguridadWS.SeguridadClient proxySeguridad = new SeguridadWS.SeguridadClient();
                SeguridadWS.Usuario usuarioWS = proxySeguridad.autenticarUsuario(usuario.ULogin, usuario.Password);

                Usuario usuarioSesion = new Usuario();
                usuarioSesion.IdUsuario = usuarioWS.IdUsuario;
                usuarioSesion.IdPersona = usuarioWS.IdPersona;
                usuarioSesion.ULogin = usuarioWS.ULogin;
                usuarioSesion.Password = usuarioWS.Password;
                usuarioSesion.Tipo = usuarioWS.Tipo;

                if (usuarioWS.Tipo.Equals("ADMIN"))
                {
                    usuarioSesion.NombreUsuario = "Administrador";
                    mensaje = "Bienvenido " + usuarioSesion.NombreUsuario;
                }
                else {
                    ClientesWS.ClientesClient proxyClientes = new ClientesWS.ClientesClient();
                    ClientesWS.Cliente clienteWS = proxyClientes.ObtenerCliente((int)usuarioWS.IdPersona);
                   
                    Cliente clienteSesion = new Cliente();
                    clienteSesion.IdCliente = clienteWS.IdCliente;
                    clienteSesion.Nombres = clienteWS.Nombres;
                    clienteSesion.Apellidos = clienteWS.Apellidos;
                    clienteSesion.TipoDocumento = clienteWS.TipoDocumento;
                    clienteSesion.NumeroDocumento = clienteWS.NumeroDocumento;
                    clienteSesion.Email = clienteWS.Email;
                    clienteSesion.Direccion = clienteWS.Direccion;
                    clienteSesion.Telefono = clienteWS.Telefono;
                    clienteSesion.FecNacimiento = clienteWS.FecNacimiento;
                    clienteSesion.TipoCliente = clienteWS.TipoCliente;

                    Session["ClienteSesion"] = clienteSesion;
                    if (clienteSesion.TipoCliente.Equals("PJURIDCA"))
                    {
                        usuarioSesion.NombreUsuario = clienteWS.RazonSocial;
                    }
                    else {
                        usuarioSesion.NombreUsuario = clienteWS.Nombres + " " + clienteWS.Apellidos;
                    }
                    
                    mensaje = "Bienvenido " + usuarioSesion.NombreUsuario;
                }

                Session["UsuarioSesion"] = usuarioSesion;
                
                tipoMensaje = "INFO";
            }
            catch (FaultException<SeguridadWS.SeguridadException> ex)
            {
                mensaje = ex.Message;
                tipoMensaje = "WARN";
            }
            
            
            return (Json(new { mensaje = mensaje, tipoMensaje = tipoMensaje, redirectTo = Url.Action("Index", "Home") }, JsonRequestBehavior.DenyGet));
        }

        public ActionResult CerrarSesion()
        {
            Session.Abandon();
            return Redirect("/Home/Index");
        }

    }
}
